package com.taotao.web.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * 操作redis的工具类
 * @author Beck
 *
 */
@Service
public class RedisService {
    @Autowired
    private ShardedJedisPool shardedJedisPool;
    
    /**
     * 根据key获取value
     * @param key
     * @return
     */
    public String get(String key){
        ShardedJedis shardedJedis = null;
        try {
            // 从连接池中获取到jedis分片对象
            shardedJedis = shardedJedisPool.getResource();

            // 从redis中获取数据  插槽
            String value = shardedJedis.get(key);
            return value;
        } finally {
            if (null != shardedJedis) {
                // 关闭，检测连接是否有效，有效则放回到连接池中，无效则重置状态
                shardedJedis.close();
            }
        }
    }
    
    /**
     * 插入值
     * @param key  键
     * @param value 值
     */
    public void set(String key, String value){
        ShardedJedis shardedJedis = null;
        try {
            // 从连接池中获取到jedis分片对象
            shardedJedis = shardedJedisPool.getResource();

            // 从redis中获取数据  插槽
            shardedJedis.set(key, value);
        } finally {
            if (null != shardedJedis) {
                // 关闭，检测连接是否有效，有效则放回到连接池中，无效则重置状态
                shardedJedis.close();
            }
        }
    }
    
    /**
     * 设置值的时候，同时设置过期时间
     * @param key 键
     * @param value 值
     * @param seconds 过期时间(秒)
     */
    public void set(String key, String value, Integer seconds){
        ShardedJedis shardedJedis = null;
        try {
            // 从连接池中获取到jedis分片对象
            shardedJedis = shardedJedisPool.getResource();

            // 从redis中获取数据  插槽
            shardedJedis.setex(key, seconds, value);
        } finally {
            if (null != shardedJedis) {
                // 关闭，检测连接是否有效，有效则放回到连接池中，无效则重置状态
                shardedJedis.close();
            }
        }
    }

}
